package com.mintingi.pattern.templatemethod;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 서브클래스 에서 각 만드는 방법 알고리즘을 구현한다.
 * 
 * @author mintingi
 *
 */
public class Tea extends CaffeineBeverage {

	@Override
	void brew() {
		System.out.println("차를 우려내는 중");
	}

	@Override
	void addCondiments() {
		System.out.println("레몬을 추가하는 중");
	}

	/**
	 * 후크(hook) 메소드를 오바라이드(Override) 하여 구현
	 */
	@Override
	boolean customerWantsCondiments() {
		String answer = getUserInput();
		if(answer.toLowerCase().startsWith("y")) {
			return true;
		}else {
			return false;
		}
	}
	
	/**
	 * 사용자 입력을 받아 첨가물 추가 할지 여부
	 * @return
	 */
	private String getUserInput() {
		String answer = "";
		System.out.println("손님~ 차에 레몬을 추가해 드릴까요? (y/n)");
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		try {
			answer = in.readLine();
		}catch(IOException e) {
			System.out.println(e);
		}finally {
			try {
				if(in != null)in.close();
			} catch (IOException e) {}
		}
		return answer;
	}
	
}
